package day4;
//b.写两个线程，一个线程打印 1-52，
//另一个线程打印A-Z，保证打印顺序是12A34B…5152Z；
//实现方式: wait()等待,释放锁 notifyAll() 唤醒所有
public class Work2 {
    public static void main(String[] args) {
        Work2 w=new Work2();
        new Thread(()->{
            int num=0;
            for(int i=0;i<26;i++){
                synchronized (w) {
                    System.out.print(++num);
                    System.out.print(++num);
                    //wait() 既然释放锁 如果没有获得锁 就会出现异常的
                    //所以wait() 一般是通过上面的锁对象.wait()
                    w.notifyAll(); //唤醒所有处于等待的线程
                    try {
                        w.wait(); //线程处于等待 还可以释放锁
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
        new Thread(()->{
            for(char c='A';c<='Z';c++){
                synchronized (w){
                    System.out.print(c);
                    w.notifyAll();
                    try {
                        w.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}
